package com.softeem.music_sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.softeem.music_sys.comm.Result;
import com.softeem.music_sys.entity.Collection;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author RD
* @description 针对表【collection(用户收藏表)】的数据库操作Service
* @createDate 2025-11-07 11:19:17
*/
public interface CollectionService extends IService<Collection> {

    /**
     * 根据用户ID获取收藏列表
     */
    Page<Collection> getCollectionsByUser(Integer userId, Integer page, Integer limit);

    /**
     * 根据用户ID和类型获取收藏列表
     */
    Page<Collection> getCollectionsByUserAndType(Integer userId, Object type, Integer page, Integer limit);

    /**
     * 检查是否已收藏
     */
    boolean isCollected(Integer userId, Object type, Integer targetId);

    /**
     * 获取收藏数
     */
    long getCollectionCount(Object type, Integer targetId);

    /**
     * 取消收藏
     */
    boolean cancelCollection(Integer userId, Object type, Integer targetId);
    
    /**
     * 添加收藏
     */
    Result addCollection(Collection collection);
    
    /**
     * 删除收藏记录
     */
    Result deleteCollection(Integer id);
    
    /**
     * 获取用户收藏（Controller调用）
     */
    Result getCollectionsByUserController(Integer userId, Integer page, Integer limit);
    
    /**
     * 按类型获取用户收藏（Controller调用）
     */
    Result getCollectionsByUserAndTypeController(Integer userId, Object type, Integer page, Integer limit);
    
    /**
     * 检查是否收藏（Controller调用）
     */
    Result checkCollectionController(Integer userId, Object type, Integer targetId);
    
    /**
     * 获取对象的收藏数（Controller调用）
     */
    Result getCollectionCountController(Object type, Integer targetId);
    
    /**
     * 批量收藏（Controller调用）
     */
    Result batchAddCollection(Integer userId, Object type, List<Integer> targetIds);
}